package de.definitives.creoleconverter.renderer;

import de.definitives.creoleconverter.document.*;

/**
 * Renderers must be able to render each document component.
 *
 * @author Andre Steinert
 */
public interface Renderer {

    /**
     * Get the media type this renderer produces.
     *
     * <p> @see <a href="http://en.wikipedia.org/wiki/Internet_media_type"
       >Internet media type</a></p>
     * 
     * @return Name of the returned format.
     * 
     */
    public String getInternetMediaType();

    public void render(Bold bold);

    public void render(DefinitionTitle definition);

    public void render(DefinitionList list);

    public void render(DefinitionTerm term);

    public void render(Document document);

    public void render(Heading1 heading);

    public void render(Heading2 heading);

    public void render(Heading3 heading);

    public void render(Heading4 heading);

    public void render(Heading5 heading);

    public void render(Heading6 heading);

    public void render(HorizontalRule horizontalRule);

    public void render(Image image);

    public void render(Italics italics);

    public void render(LineBreak lineBreak);

    public void render(Link link);

    public void render(ListItem item);

    public void render(NowikiBlock nowiki);

    public void render(NowikiInline nowiki);

    public void render(OrderedList list);

    public void render(Paragraph paragraph);

    public void render(Subscript subscript);

    public void render(Superscript superscript);

    public void render(Table table);

    public void render(TableData tableData);

    public void render(TableHead tableHead);

    public void render(TableRow tableRow);

    public void render(Text text);

    public void render(UnorderedList list);
 
}